package com.ysx.member.mapper;

import com.ysx.member.domain.Member;
import com.ysx.member.domain.MemberExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 会员Mapper接口
 * 提供对会员数据的增删改查操作
 */
public interface MemberMapper {
    /**
     * 根据条件统计会员数量
     * @param example 查询条件对象
     * @return 符合条件的会员总数
     */
    long countByExample(MemberExample example);

    /**
     * 根据条件删除会员
     * @param example 查询条件对象
     * @return 删除的记录数
     */
    int deleteByExample(MemberExample example);

    /**
     * 根据主键删除会员
     * @param id 会员主键ID
     * @return 删除的记录数
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 插入会员记录
     * @param record 会员对象
     * @return 插入的记录数
     */
    int insert(Member record);

    /**
     * 选择性插入会员记录（只插入非空字段）
     * @param record 会员对象
     * @return 插入的记录数
     */
    int insertSelective(Member record);

    /**
     * 根据条件查询会员列表
     * @param example 查询条件对象
     * @return 会员列表
     */
    List<Member> selectByExample(MemberExample example);

    /**
     * 根据主键查询会员
     * @param id 会员主键ID
     * @return 会员对象
     */
    Member selectByPrimaryKey(Long id);

    /**
     * 根据条件选择性更新会员信息
     * @param record 要更新的会员对象
     * @param example 更新条件对象
     * @return 更新的记录数
     */
    int updateByExampleSelective(@Param("record") Member record, @Param("example") MemberExample example);

    /**
     * 根据条件更新会员信息
     * @param record 要更新的会员对象
     * @param example 更新条件对象
     * @return 更新的记录数
     */
    int updateByExample(@Param("record") Member record, @Param("example") MemberExample example);

    /**
     * 根据主键选择性更新会员信息
     * @param record 会员对象
     * @return 更新的记录数
     */
    int updateByPrimaryKeySelective(Member record);

    /**
     * 根据主键更新会员信息
     * @param record 会员对象
     * @return 更新的记录数
     */
    int updateByPrimaryKey(Member record);
}
